#ifndef _AEENGINE_H_
#define _AEENGINE_H_

#define _CRT_SECURE_NO_WARNINGS

#include <AEIncludes.h>

#if defined AE_COMPILER_MSVC
	#ifndef _CRT_SECURE_NO_DEPRECATE
		#define _CRT_SECURE_NO_DEPRECATE 1
	#endif
	
	#ifndef _CRT_NONSTDC_NO_DEPRECATE
		#define _CRT_NONSTDC_NO_DEPRECATE 1
	#endif
#endif

////////////////////////////////////////////////////////////////
//  AEEngine includes
////////////////////////////////////////////////////////////////

#include <AEImpExp.h>
#include <debug/AEDebug.h>
#include <AETypes.h>

#if defined(AE_PLATFORM_WIN32)
	#include <platform/AEPlatformWin32.h>
#elif defined(AE_PLATFORM_IOS)
	#include <platform/AEPlatformIOS.h>
#elif defined(AE_PLATFORM_ANDROID)
	#include <platform/AEPlatformAndroid.h>
#elif defined(AE_PLATFORM_MAC386)
    #include <platform/AEPlatformMacOS.h>
#elif defined(AE_PLATFORM_LINUX)
    #include <platform/AEPlatformLinux.h>
#else
	#error "Nessuna piattaforma definita."
#endif

#include <core/threads/AEThreadLocalData.h>

#include <core/memory/AEMemoryAllocator.h>
#include <core/memory/AEMemoryManager.h>
#include <core/memory/AEMemoryConfig.h>
#include <core/memory/AEContainerTempAllocator.h>
#include <core/memory/AEContainerHeapAllocator.h>
#include <core/memory/AEContainerDebugAllocator.h>
#include <core/memory/AELinearAllocator.h>
#include <core/memory/AEMemoryConfig.h>
#include <core/object/AEBaseObject.h>
#include <core/object/AEReferencedObject.h>

#include <core/types/AESmartPtr.h>
#include <core/system/AEDateTime.h>
#include <core/math/AEMath.h>
#include <core/containers/AEArrayUtil.h>
#include <core/containers/AETList.h>
#include <core/containers/AETFixedSizeArray.h>
#include <core/containers/AETString.h>
#include <core/containers/AETBaseArray.h>
#include <core/containers/AETArray.h>
#include <core/containers/AEBaseMap.h>
#include <core/containers/AECachedHashMap.h>
#include <core/containers/AEMap.h>
#include <core/containers/AETMap.h>
#include <core/containers/AETQueue.h>
#include <core/containers/AEStringMap.h>

#include <core/system/io/AEFileSystemI.h>
#include <core/system/io/AEBaseFileStreamI.h>
#include <core/system/io/AEFileInStreamI.h>
#include <core/system/io/AEFileOutStreamI.h>
#include <core/system/io/filesystems/AEFileSystemFactoryI.h>
#include <core/system/io/filesystems/AEDiskFileSystem.h>
#include <core/system/io/stream/AEDiskFileInStream.h>
#include <core/system/io/stream/AEDiskFileOutStream.h>
#include <core/system/io/filesystems/AEDefaultFileSystemFactory.h>

//#include <core/system/io/readers/AEStreamReader.h>
//#include <core/system/io/readers/AEBufferedStreamReader.h>

//#include <core/system/io/AEFileSystem.h>
#include <core/system/AEProcessor.h>
#include <core/system/AETimer.h>






#include <core/threads/AECriticalSection.h>
#include <core/threads/AEThread.h>
#include <core/threads/AEWaitableObject.h>
#include <core/threads/AEEvent.h>
#include <core/threads/AESemaphore.h>
#include <core/threads/AEScopedLock.h>
#include <core/threads/AEThreadContext.h>
#include <core/threads/AEAtomic.h>

#endif
// _AEENGINE_H_
